var arr = [1, 3, 2, 6, 5, 4, 8, 5]

// 简单的解法
function findKthNum(nums, k) {
  var obj = {}
  nums.sort(function (a, b) {
    !obj[a] ? obj[a] = 1 : obj[a]++;
    return b - a;
  });

  return `第 ${k} 大的数字: ${nums[k - 1]}, 出现次数: ${obj[nums[k - 1]]}`;
}

// 复杂的解法
function findKthNum(arr, k) {
  var len = arr.length; m
  // 对给定的 k 值进行判断，确保 len >= k >= 1
  if (k > len || k < 1) {
    console.log("There doesn't exists the number you want !");
    return;
  }
  // 获得数组的副本
  var _arr = arr.slice();
  // 遍历数组时，当前数组元素的大小排名
  var rank = 1;
  // 第 k 大的数字
  var num = 0;
  // 第 k 大数字的出现次数
  var count = 0;
  // 对 _arr 进行降序排序
  _arr.sort(function (a, b) {
    return b - a;
  });
  for (var i = 0; i < len; i++) {
    var j = i + 1;
    // 对当前数组元素的大小排名和 k 值进行比较，若排名大
    // 于 k 值则结束循环；如果排名等于 k 值，则将该数组
    // 元素记为第 k 大的数字，且次数加一。
    if (rank > k) {
      break;
    } else if (rank == k) {
      num = _arr[i];
      count++;
    }
    // 若当前遍历的数组项与下一项数字不相等，则说明下一个
    // 数字的排名值比当前遍历数字的排名刚好大 1
    if ((j < len) && (_arr[i] != _arr[j])) {
      rank++;
    }
  }
  // 遍历结束时，若最后遍历的数组元素的大小排名小于给定的 k 值，则说
  // 明数组中没有第 k 大的数字，即 k 值超出了所有数组元素的大小排名。
  if (rank < k) {
    console.log("There doesn't exists the number you want !");
  } else {
    console.log('第' + k + '大的数字：' + num, '出现次数：' + count);
  }
}